unit u_BuscaBal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FMTBcd, DB, SqlExpr, dxCore, dxButton, ExtCtrls, MMJPanel,
  Grids, DBGrids, JvExDBGrids, JvDBGrid, DBClient, Provider;

type
  Tf_BuscaBal = class(TForm)
    JvDBGrid1: TJvDBGrid;
    MMJPanel1: TMMJPanel;
    btnFiltro: TdxButton;
    btnSair: TdxButton;
    dxButton1: TdxButton;
    s_Busca: TSQLDataSet;
    p_Busca: TDataSetProvider;
    ds_Busca: TClientDataSet;
    s_BuscaID_BALANCA: TIntegerField;
    s_BuscaID_PRODUTO: TIntegerField;
    s_BuscaID_CLIENTE: TIntegerField;
    s_BuscaID_USUARIO: TIntegerField;
    s_BuscaID_FRETE: TIntegerField;
    s_BuscaBRUTO: TFloatField;
    s_BuscaTARA: TFloatField;
    s_BuscaLIQUIDO: TFloatField;
    s_BuscaDATA_BRUTO: TDateField;
    s_BuscaDATA_TARA: TDateField;
    s_BuscaHORA_BRUTO: TTimeField;
    s_BuscaHORA_TARA: TTimeField;
    s_BuscaSTATUS: TStringField;
    s_BuscaVALOR: TFloatField;
    s_BuscaFORMA_PGTO: TStringField;
    s_BuscaID_CAIXA: TIntegerField;
    s_BuscaSERIE: TStringField;
    s_BuscaN_SERIE: TIntegerField;
    s_BuscaN_PARCELAS: TIntegerField;
    s_BuscaTIPO_LANCAMENTO: TStringField;
    s_BuscaOBS: TStringField;
    s_BuscaPRODUTO: TStringField;
    s_BuscaUNIDADEMEDIDA: TStringField;
    s_BuscaVALOR_PRAZO: TFloatField;
    s_BuscaUCUSERNAME: TStringField;
    s_BuscaNOMECLIENTE: TStringField;
    s_BuscaRAZAOSOCIAL: TStringField;
    s_BuscaATIVO: TSmallintField;
    s_BuscaCNPJ: TStringField;
    s_BuscaINSCESTADUAL: TStringField;
    s_BuscaNOMETRANSP: TStringField;
    s_BuscaPLACATRANSP: TStringField;
    ds_BuscaID_BALANCA: TIntegerField;
    ds_BuscaID_PRODUTO: TIntegerField;
    ds_BuscaID_CLIENTE: TIntegerField;
    ds_BuscaID_USUARIO: TIntegerField;
    ds_BuscaID_FRETE: TIntegerField;
    ds_BuscaBRUTO: TFloatField;
    ds_BuscaTARA: TFloatField;
    ds_BuscaLIQUIDO: TFloatField;
    ds_BuscaDATA_BRUTO: TDateField;
    ds_BuscaDATA_TARA: TDateField;
    ds_BuscaHORA_BRUTO: TTimeField;
    ds_BuscaHORA_TARA: TTimeField;
    ds_BuscaSTATUS: TStringField;
    ds_BuscaVALOR: TFloatField;
    ds_BuscaFORMA_PGTO: TStringField;
    ds_BuscaID_CAIXA: TIntegerField;
    ds_BuscaSERIE: TStringField;
    ds_BuscaN_SERIE: TIntegerField;
    ds_BuscaN_PARCELAS: TIntegerField;
    ds_BuscaTIPO_LANCAMENTO: TStringField;
    ds_BuscaOBS: TStringField;
    ds_BuscaPRODUTO: TStringField;
    ds_BuscaUNIDADEMEDIDA: TStringField;
    ds_BuscaVALOR_PRAZO: TFloatField;
    ds_BuscaUCUSERNAME: TStringField;
    ds_BuscaNOMECLIENTE: TStringField;
    ds_BuscaRAZAOSOCIAL: TStringField;
    ds_BuscaATIVO: TSmallintField;
    ds_BuscaCNPJ: TStringField;
    ds_BuscaINSCESTADUAL: TStringField;
    ds_BuscaNOMETRANSP: TStringField;
    ds_BuscaPLACATRANSP: TStringField;
    ds1: TDataSource;
    procedure dxButton1Click(Sender: TObject);
    procedure btnFiltroClick(Sender: TObject);
    procedure btnSairClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    v_NPF, v_IDFretista : string;
    v_Placa, v_Situacao : string;
    v_Dta1, v_Dta2       : string;  
    { Public declarations }
  end;

var
  f_BuscaBal: Tf_BuscaBal;

implementation

uses UDM, u_Filtro;

{$R *.dfm}

procedure Tf_BuscaBal.dxButton1Click(Sender: TObject);
var txt_sql, txt_var : string;
begin
   v_Situacao := '';
   v_Dta1 := '  /  /    ';
   v_Dta2 := '  /  /    ';
   v_NPF := '';
   v_IDFretista := '';
   v_Placa := '';
   if (ds_Busca.Active) then
     ds_Busca.Close;
   ds_Busca.CommandText := '';

   f_Filtro.cbbSituacao.Items.Clear;
   if (DM.ENTRADA_SAIDA = 'ENTRADA') then
   begin
     v_Situacao := 'DESCARREGANDO';
     f_Filtro.cbbSituacao.Items.Add('DESCARREGA');
     f_Filtro.cbbSituacao.Text := 'DESCARREGA';
   end
   else
   begin
     v_Situacao := 'CARREGANDO';
     f_Filtro.cbbSituacao.Items.Add('CARREGANDO');
     f_Filtro.cbbSituacao.Text := 'CARREGANDO';
   end;
   f_Filtro.cbbSituacao.Items.Add('FINALIZADO');
   f_Filtro.ShowModal;


   //if (v_Dta1 = '  /  /    ') then
   //   v_Dta1 := '01/01/1901';

   //if (v_Dta2 = '  /  /    ') then
   //   v_Dta2 := '31/12/2099';

   txt_sql := 'select  b.*, p.PRODUTO, p.UNIDADEMEDIDA, p.VALOR_PRAZO, u.UCUSERNAME ' +
              ', c.NOMECLIENTE, c.RAZAOSOCIAL, c.STATUS as ativo, c.CNPJ, c.INSCESTADUAL ' +
              ', t.NOMETRANSP, t.PLACATRANSP from BALANCA b ' +
              'left outer join PRODUTOS p on p.CODPRODUTO = b.ID_PRODUTO ' +
              'left outer join UCTABUSERS u  on u.UCIDUSER = b.ID_USUARIO ' +
              'left outer join CLIENTES c  on c.CODCLIENTE = b.ID_CLIENTE ' +
              'left outer join  TRANSPORTADORA t on t.CODTRANSP = b.ID_FRETE ';

   txt_var := '';

   if (v_Situacao <> '') then
   begin
     txt_var := 'Where b.STATUS = ' + QuotedStr(v_Situacao);
   end;

   if (v_Dta1 <> '  /  /    ') then
     if (v_Dta2 <> '  /  /    ') then
   begin
     if (txt_var = '') then
       txt_var := 'Where b.DATA_TARA between ' + QuotedStr(FormatDateTime('mm/dd/yyyy', StrToDate(v_Dta1)))
     else
       txt_var := txt_var + ' and b.DATA_TARA between ' + QuotedStr(FormatDateTime('mm/dd/yyyy', StrToDate(v_Dta1)));
     txt_var := txt_var + ' and ' + QuotedStr(FormatDateTime('mm/dd/yyyy', StrToDate(v_Dta2)));
   end;

   if (v_NPF <> '') then
     txt_var := txt_var + ' and b.N_SERIE = ' + v_NPF;

   if (v_Placa <> '') then
     txt_var := txt_var + ' and t.PLACATRANSP = ' + QuotedStr(v_Placa);

   if (txt_var = '') then
   begin
     if (DM.ENTRADA_SAIDA = 'ENTRADA') then
       txt_var := 'Where b.TIPO_LANCAMENTO = ' + QuotedStr('Entrada')
     else
       txt_var := 'where b.TIPO_LANCAMENTO = ' + QuotedStr('Saida');
   end
   else
   begin
     if (DM.ENTRADA_SAIDA = 'ENTRADA') then
       txt_var := txt_var + ' and b.TIPO_LANCAMENTO = ' + QuotedStr('Entrada')
     else
       txt_var := txt_var + ' and b.TIPO_LANCAMENTO = ' + QuotedStr('Saida');
   end;

   ds_Busca.CommandText := txt_sql + txt_var;
   ds_Busca.Open;

end;

procedure Tf_BuscaBal.btnFiltroClick(Sender: TObject);
begin
  DM.ID_BALANCA := ds_BuscaID_BALANCA.AsInteger;
  Close;
end;

procedure Tf_BuscaBal.btnSairClick(Sender: TObject);
begin
  close;
end;

procedure Tf_BuscaBal.FormShow(Sender: TObject);
var txt_sql, txt_var : string;
begin
   if (DM.ENTRADA_SAIDA = 'ENTRADA') then
     v_Situacao := 'DESCARREGA'
   else
     v_Situacao := 'CARREGANDO';
   v_Dta1 := '  /  /    ';
   v_Dta2 := '  /  /    ';
   v_NPF := '';
   v_IDFretista := '';
   v_Placa := '';

   if (ds_Busca.Active) then
     ds_Busca.Close;
   ds_Busca.CommandText := '';

   txt_sql := 'select  b.*, p.PRODUTO, p.UNIDADEMEDIDA, p.VALOR_PRAZO, u.UCUSERNAME ' +
              ', c.NOMECLIENTE, c.RAZAOSOCIAL, c.STATUS as ativo, c.CNPJ, c.INSCESTADUAL ' +
              ', t.NOMETRANSP, t.PLACATRANSP from BALANCA b ' +
              'left outer join PRODUTOS p on p.CODPRODUTO = b.ID_PRODUTO ' +
              'left outer join UCTABUSERS u  on u.UCIDUSER = b.ID_USUARIO ' +
              'left outer join CLIENTES c  on c.CODCLIENTE = b.ID_CLIENTE ' +
              'left outer join  TRANSPORTADORA t on t.CODTRANSP = b.ID_FRETE ';

   txt_var := '';

   if (v_Situacao <> '') then
   begin
     txt_var := 'Where b.STATUS = ' + QuotedStr(v_Situacao);
   end;

   if (v_Dta1 <> '  /  /    ') then
     if (v_Dta2 <> '  /  /    ') then
   begin
     if (txt_var = '') then
       txt_var := 'Where b.DATA_TARA between ' + QuotedStr(FormatDateTime('mm/dd/yyyy', StrToDate(v_Dta1)))
     else
       txt_var := txt_var + ' and b.DATA_TARA between ' + QuotedStr(FormatDateTime('mm/dd/yyyy', StrToDate(v_Dta1)));
     txt_var := txt_var + ' and ' + QuotedStr(FormatDateTime('mm/dd/yyyy', StrToDate(v_Dta2)));
   end;

   if (v_NPF <> '') then
     txt_var := txt_var + ' and b.N_SERIE = ' + v_NPF;

   if (v_Placa <> '') then
     txt_var := txt_var + ' and t.PLACATRANSP = ' + QuotedStr(v_Placa);

   if (txt_var = '') then
   begin
     if (DM.ENTRADA_SAIDA = 'ENTRADA') then
       txt_var := 'Where b.TIPO_LANCAMENTO = ' + QuotedStr('Entrada')
     else
       txt_var := 'where b.TIPO_LANCAMENTO = ' + QuotedStr('Saida');
   end
   else
   begin
     if (DM.ENTRADA_SAIDA = 'ENTRADA') then
       txt_var := txt_var + ' and b.TIPO_LANCAMENTO = ' + QuotedStr('Entrada')
     else
       txt_var := txt_var + ' and b.TIPO_LANCAMENTO = ' + QuotedStr('Saida');
   end;

   ds_Busca.CommandText := txt_sql + txt_var;
   ds_Busca.Open;
   if (ds_Busca.IsEmpty) then
       ds_Busca.Close;
end;

end.
